"192.168.0.1:sipop" Previous topic Chapter index Next topic

PATOLOGIAS_BI

 

 

Descriptions

There is no desription for trigger PATOLOGIAS_BI

 

Definition


CREATE TRIGGER PATOLOGIAS_BI FOR PATOLOGIAS ACTIVE
BEFORE INSERT POSITION 0
AS
declare variable vPADRE CHAR(13);
declare variable vHIJO integer;
declare variable  TAM INTEGER;
declare variable HIJOMAXIMO CHAR(13);
BEGIN
  /* Trigger body */

if (NEW.ID_PATOLOGIAS IS NULL) then
BEGIN

if (new.ID_PADRE_PATOLOGIA IS NULL) then
BEGIN
   NEW.ID_PADRE_PATOLOGIA = 'PADRE';

   SELECT COUNT (ID_PATOLOGIAS) FROM PATOLOGIAS
   WHERE
           ID_PADRE_PATOLOGIA = NEW.ID_PADRE_PATOLOGIA
   INTO:vHIJO;
   if (vHIJO <10) then
   BEGIN
           NEW.ID_PATOLOGIAS = vHIJO;
           NEW.hijos= 0;
   END
   else
     exception exception_padrenoexiste;
END
ELSE
  BEGIN
     SELECT ID_PATOLOGIAS FROM PATOLOGIAS
     WHERE
     ID_PATOLOGIAS = RTRIM(NEW.ID_PADRE_PATOLOGIA)
     INTO:vPADRE;

     SELECT (HIJOS) FROM PATOLOGIAS
     WHERE
     ID_PATOLOGIAS = NEW.ID_PADRE_PATOLOGIA
     INTO:vHIJO;


   TAM = STRLEN(RTRIM(NEW.ID_PADRE_PATOLOGIA));

   if (vPADRE IS NULL) then
   BEGIN
     EXCEPTION exception_padrenoexiste;
   END
   begin
               SELECT max(ID_PATOLOGIAS) FROM PATOLOGIAS
               WHERE
                     ID_PADRE_PATOLOGIA = NEW.ID_PADRE_PATOLOGIA
               INTO: HIJOMAXIMO;



/*EVALUACION DEL NIVEL 1 */
       if (STRLEN(RTRIM(NEW.ID_PADRE_PATOLOGIA))=1) then
       BEGIN
           IF(HIJOMAXIMO IS NULL) THEN
            vHIJO=0;
          ELSE
          BEGIN
            SELECT SUBSTR(RTRIM(ID_PATOLOGIAS),2,3) FROM PATOLOGIAS WHERE
            ID_PATOLOGIAS=RTRIM(:HIJOMAXIMO)
            INTO: vHIJO;

            if (RTRIM(vHIJO)='00') then
              vHIJO= 0;
             ELSE
               vHIJO = vHIJO+1;
          END
          IF (vHIJO<10) THEN
                   NEW.ID_PATOLOGIAS = RTRIM(vPADRE)||'0' || vHIJO;

                ELSE
                 if (vHIJO<100) then
                     BEGIN
                         NEW.ID_PATOLOGIAS = RTRIM(vPADRE)|| vHIJO;
                     END
                 ELSE
                     EXCEPTION EXCEPTION_OVER;
       END
/*EVALUACION NIVEL 2*/
      if (TAM = 3 ) then
           BEGIN
           SELECT SUBSTR(RTRIM(ID_PATOLOGIAS),4,5) FROM PATOLOGIAS WHERE
               ID_PATOLOGIAS=RTRIM(:HIJOMAXIMO)
               INTO: vHIJO;
           if (vHIJO IS NULL) then
             vHIJO=0;
           ELSE
               vHIJO =   vHIJO+1;
             IF (vHIJO <10) THEN
                   NEW.ID_PATOLOGIAS = RTRIM(vPADRE)||'0' || vHIJO;
                ELSE
                 if (vHIJO<100) then
                     BEGIN
                         NEW.ID_PATOLOGIAS = RTRIM(vPADRE)|| vHIJO;
                     END
                 ELSE
                     EXCEPTION EXCEPTION_OVER;

         /*       IF (vHIJO<10) THEN
                         BEGIN
                               HIJO=:vHIJO+1 ;
                               NEW.ID_PATOLOGIAS = RTRIM(PADRE)||'0' || vHIJO ;
                         END
                ELSE
                      BEGIN
                      NEW.ID_PATOLOGIAS = RTRIM(PADRE)|| HIJO;
                      END*/
           END

           if (TAM = 5 ) then
           BEGIN
                IF (vHIJO<10) THEN
                    BEGIN
                         vHIJO=:vHIJO+1 ;
                         NEW.ID_PATOLOGIAS = RTRIM(vPADRE)||'0' || vHIJO ;
                    END
                 ELSE
                 if (vHIJO<100) then
                     BEGIN
                         NEW.ID_PATOLOGIAS = RTRIM(vPADRE)|| vHIJO;
                     END
                 ELSE
                     EXCEPTION EXCEPTION_OVER;

           END

           if (TAM = 7 ) then
           BEGIN
                IF (vHIJO<10) THEN
                   BEGIN
                   vHIJO=:vHIJO+1 ;
                   NEW.ID_PATOLOGIAS = RTRIM(vPADRE)||'0' || vHIJO ;
                   END
                ELSE
                    BEGIN
                    NEW.ID_PATOLOGIAS = RTRIM(vPADRE)|| vHIJO;
                END
           END

           if (TAM = 9 ) then
           BEGIN
                IF (vHIJO<10) THEN
                BEGIN
                    vHIJO=:vHIJO+1 ;
                    NEW.ID_PATOLOGIAS = RTRIM(vPADRE)||'0' || vHIJO ;
                END
           ELSE
               BEGIN
                NEW.ID_PATOLOGIAS = RTRIM(vPADRE)|| vHIJO;
               END
           END

          if (TAM = 11 ) then
          BEGIN
                IF (vHIJO<10) THEN
                   BEGIN
                     vHIJO=:vHIJO+1 ;
                     NEW.ID_PATOLOGIAS = RTRIM(vPADRE)||'0' || vHIJO;
                    END
                 ELSE
                    BEGIN
                    NEW.ID_PATOLOGIAS = RTRIM(vPADRE)|| vHIJO;
                 END
          END
      NEW.hijos= 0;

      END
  END
END
END

    This file was generated with EMS InterBase/FireBird Manager (www.ibmanager.com) at 09/06/2005 05:52 p.m. Previous topic Chapter index Next topic